<?php
/**
 * View_Mark
 *
 * Класс, отвечающий за отображение оценок
 *
 * @author Гринько Виталий <vitalygrinko@gmail.com>
 * @version 1.0
 */
class View_Mark {

  /**
   * Выводим блок для отображения/выставления оценок
   *
   *
   * $authorDisable bool - (true) - автор не может ставить оценку, (false) - автор может поставить оценку
   *
   */
  public static function showMark ($essenceType, $arrEssence, $markType = 0, $className = "stars", $mandatoryDisable = false, $authorDisable = true) {
    $objSession = User_Session::instance();
    $markData = $arrEssence['mark_data'][$markType]; //информация об оценке для данного типа
    //if ($markType == 1) {echo '</div><pre>'; print_r($markData); echo '</pre>';}
    $essenceName = Service_Essence::getEssenceTypeName($essenceType);
    $arrMarks = Mark::getGlobalMarkValuesArr($markType); //получаем массив со стандартными значениями оценок для данного типа оценивания
    $selectedValue = $markData['selected'];
    
    //выбираем ближнее значение  из доступных
    $selectedValue = Mark::findClosestAvailable($selectedValue, Mark::getGlobalMarkValuesArr($markType));
    $selectedIndex = array_search($selectedValue, $arrMarks);
    if (($selectedIndex === false) && ($markType == 1)/* && ($selectedValue != 0)*/) // КОМПЕНИСИРУЕМ то, что между значениями при оценке есть "дыры"
      $selectedIndex = array_search($selectedValue-1, $arrMarks);
    if ($selectedIndex === false)
        $selectedIndex = -1;
    $userMarkFieldName = ($markType === 1) ? 'complexity' : 'mark';
    $canUserEdit = false;
    if(($arrEssence['ID_user'] == $objSession->getUserId()) and !$authorDisable)
    	$canUserEdit = true;
    if ($arrEssence['ID_user'] != $objSession->getUserId())
    	$canUserEdit = true;
    $disableCondition = $mandatoryDisable || !$objSession->isLoggedIn() || !$canUserEdit || !is_null($arrEssence[$userMarkFieldName]);
    if ($selectedValue == 0) {
      if ($markData['isMarkSetByAnyone'])
        $selectedIndex = 2;
    }
    $width = $markType == 1 ? 10 : 20;
    if ($markType == 1)
      echo '<img style="display:none;" src="' . W_IMAGES . 'complexity_gradient-y.gif">';
    echo '<div class="' . $className . '" idEssence="' . $arrEssence['ID_' . $essenceName] . '" selectedIndex="' . $selectedIndex . '" isDisabled="' . ($disableCondition ? 1 : 0) . '">
            <div class="inner_mark_2" style="width:' . (int)(($selectedIndex + 1)*$width) . '%" title="">' . ($markType == 1 ? '<img id="complexityImg" style="float: right; width:' . (int)(($selectedIndex + 1) * $width) . '%; height: 16px;" src="' . W_IMAGES . 'complexity_gradient-r.gif">' : NULL) . '</div>
          </div>';
    echo '<div class="markTitle"></div>';
  }
}
?>